package trabajo.sw;

import clases.domain.Empleado;
import clases.domain.Unidad;
import ejb.session.MantenedoresLocal;
import java.util.Date;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import org.primefaces.event.RowEditEvent;

@ManagedBean
@RequestScoped
public class GestionadorEmpleadoMB {

    private String rut;
    private String nombre;
    private String cargo;
    private String email;
    private String direccion;
    private long telefono;
    private int unidadSeleccionada;
    private String nombreUsuario;
    private String password;
    private String mensaje;

    private List<Empleado> empleados;

    @EJB private MantenedoresLocal mantenedorEjb;
    
    public void agregarEmpleado() {
        try {
            System.out.println("agregarEmpleado");
            Empleado empleado = new Empleado();

            empleado.setNombre(getNombre());
            empleado.setCargo(getCargo());
            empleado.setNombreUsuario(getNombreUsuario());
            empleado.setDireccion(direccion);
            empleado.setEmail(getEmail());
            empleado.setFechaNacimiento(new Date());
            Unidad unidad = new Unidad();
            unidad.setNumUnidad(getUnidadSeleccionada());
            empleado.setUnidad(unidad);
            empleado.setTelefono(getTelefono());
            empleado.setPassword(getPassword());

            boolean resultado = mantenedorEjb.insertarEmpleado(empleado);
            FacesContext context = FacesContext.getCurrentInstance();
       
            if (resultado){
                context.addMessage(null, new FacesMessage("OK", "Empleado Ingresado Correctamente"));
            } else{
                context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error", "Error al ingresar empleado"));
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    public void onEdit(RowEditEvent event) {  
        Empleado empleadoEdit = (Empleado) event.getObject();
        mantenedorEjb.updateEmpleado(empleadoEdit);
        System.out.println("Edicion "+empleadoEdit.getNombre());
    }  
      
    public void onCancel(RowEditEvent event) {  
        
        boolean estado = false;
        Empleado empleadoEdit = (Empleado) event.getObject();
  
        System.out.println("Eliminar "+empleadoEdit.getNombre());
        estado = mantenedorEjb.deleteEmpleado(empleadoEdit);
        if(estado){
            getEmpleados().clear();
        }
    }

    /**
     * @return the empleados
     */
    public List<Empleado> getEmpleados() {
        if(empleados==null){
            System.out.println("Entro a buscar lista");
            //empleados = mantenedorEjb.getListEmpleados();
        }
        return empleados;
    }

    /**
     * @param empleados the empleados to set
     */
    public void setEmpleados(List<Empleado> empleados) {
        this.setEmpleados(empleados);
    }

    public String getDireccion() {
        return direccion;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    /**
     * @return the rut
     */
    public String getRut() {
        return rut;
    }

    /**
     * @param rut the rut to set
     */
    public void setRut(String rut) {
        this.rut = rut;
    }

    /**
     * @return the nombre
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * @param nombre the nombre to set
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    /**
     * @return the cargo
     */
    public String getCargo() {
        return cargo;
    }

    /**
     * @param cargo the cargo to set
     */
    public void setCargo(String cargo) {
        this.cargo = cargo;
    }

    /**
     * @return the email
     */
    public String getEmail() {
        return email;
    }

    /**
     * @param email the email to set
     */
    public void setEmail(String email) {
        this.email = email;
    }

    /**
     * @return the telefono
     */
    public long getTelefono() {
        return telefono;
    }

    /**
     * @param telefono the telefono to set
     */
    public void setTelefono(long telefono) {
        this.telefono = telefono;
    }

     /**
     * @return the nombreUsuario
     */
    public String getNombreUsuario() {
        return nombreUsuario;
    }

    /**
     * @param nombreUsuario the nombreUsuario to set
     */
    public void setNombreUsuario(String nombreUsuario) {
        this.nombreUsuario = nombreUsuario;
    }

    /**
     * @return the password
     */
    public String getPassword() {
        return password;
    }

    /**
     * @param password the password to set
     */
    public void setPassword(String password) {
        this.password = password;
    }

    /**
     * @return the unidadSeleccionada
     */
    public int getUnidadSeleccionada() {
        return unidadSeleccionada;
    }

    /**
     * @param unidadSeleccionada the unidadSeleccionada to set
     */
    public void setUnidadSeleccionada(int unidadSeleccionada) {
        this.unidadSeleccionada = unidadSeleccionada;
    }

    /**
     * @return the mensaje
     */
    public String getMensaje() {
        return mensaje;
    }

    /**
     * @param mensaje the mensaje to set
     */
    public void setMensaje(String mensaje) {
        this.mensaje = mensaje;
    }
}
